/**
 * 平板脑波数据响应模型 - 统一版本
 * 
 * 用途：封装服务端返回的脑波数据分析结果，统一项目中的数据模型
 * 方法：使用数据类封装服务端响应，支持JSON反序列化，包含完整的频段信息
 * 原理：
 * - 基于实际服务端API返回格式设计
 * - 统一命名规范，使用驼峰命名法
 * - 包含完整的频段信息（包括Sigma）
 * - 支持Gson序列化/反序列化
 */
package com.example.brain_wave.api.model

import com.google.gson.annotations.SerializedName

/**
 * 频域功率比例数据
 * 包含所有频段的功率比例信息
 */
data class FrequencyBands(
    @SerializedName("Delta")
    val delta: Double,      // Delta波比例 (0.5-4 Hz)
    
    @SerializedName("Theta") 
    val theta: Double,      // Theta波比例 (4-8 Hz)
    
    @SerializedName("Alpha")
    val alpha: Double,      // Alpha波比例 (8-13 Hz)
    
    @SerializedName("Sigma")
    val sigma: Double,      // Sigma波比例 (11-16 Hz, 睡眠纺锤波)
    
    @SerializedName("Beta")
    val beta: Double,       // Beta波比例 (13-30 Hz)
    
    @SerializedName("Gamma")
    val gamma: Double       // Gamma波比例 (30-100 Hz)
)

/**
 * 平板脑波数据响应
 * 统一的数据模型，适用于整个项目
 */
data class TabletBrainWaveResponse(
    // === 基本响应信息 ===
    @SerializedName("success")
    val success: Boolean,
    
    @SerializedName("message")
    val message: String,
    
    @SerializedName("session_id")
    val sessionId: String,
    
    @SerializedName("timestamp")
    val timestamp: Long,
    
    // === 数据处理信息 ===
    @SerializedName("received_data_points")
    val receivedDataPoints: Int,
    
    @SerializedName("buffer_size")
    val bufferSize: Int,
    
    @SerializedName("analysis_duration_ms")
    val analysisDurationMs: Long,
    
    // === 分析结果（可选） ===
    @SerializedName("sleep_stage")
    val sleepStage: String? = null,
    
    @SerializedName("confidence")
    val confidence: Double? = null,
    
    @SerializedName("frequency_bands")
    val frequencyBands: FrequencyBands? = null,
    
    @SerializedName("yasa_available")
    val yasaAvailable: Boolean? = null
)